<?php
/**
 * Windows环境下的HTML海报生成测试脚本
 */
require_once __DIR__ . '/HtmlToImageService.php';

// 创建服务实例，启用调试模式
$service = new common\services\poster\htmlToImage\HtmlToImageService('node', null, null, true);

// 设置测试数据
$templateData = [
  'userName' => '测试用户',
  'shopName' => '测试商店',
  'avatar' => 'https://robohash.org/test?set=set4&size=150x150',
  'storeLogo' => 'https://dummyimage.com/200x80/4a86e8/ffffff&text=测试商店',
  'qrCode' => 'https://api.qrserver.com/v1/create-qr-code/?size=180x180&data=https://example.com/test',
  'template' => 1,
  'background' => '',
  'text' => '这是一个Windows环境下的海报测试',
  'isShopInfo' => true,
  'isStoreLogo' => true
];

// 输出环境信息
echo "操作系统: " . PHP_OS . "\n";
echo "临时目录: " . sys_get_temp_dir() . "\n";
echo "当前目录: " . __DIR__ . "\n\n";

// 打印当前路径
echo "执行海报生成...\n\n";

// 选择模板文件
$templateFile = __DIR__ . '/templates/basic-poster.html';
if (file_exists(__DIR__ . '/templates/member-poster.html')) {
  $templateFile = __DIR__ . '/templates/member-poster.html';
}

// 生成海报
$result = $service->generatePoster(
  $templateFile,
  $templateData,
  [
    'outputPrefix' => 'windows_test_' . time(),
    'transparent' => true
  ]
);

// 显示结果
echo "生成结果: " . ($result['success'] ? '成功' : '失败') . "\n";
if ($result['success']) {
  echo "生成的文件:\n";
  foreach ($result['files'] as $type => $path) {
    if ($path) {
      echo "- {$type}: {$path}\n";
    }
  }
} else {
  echo "错误信息: " . $result['error'] . "\n";
}

// 检查文件是否真的存在
echo "\n检查文件是否真的存在:\n";
if (!empty($result['files'])) {
  foreach ($result['files'] as $type => $path) {
    if ($path) {
      $exists = file_exists($path) ? '存在' : '不存在';
      echo "- {$type}: {$path} ({$exists})\n";
    }
  }
} else {
  echo "没有文件路径信息\n";
}

// 检查实际生成的文件
echo "\n检查实际生成的文件名:\n";
// 从输出目录列出所有最近生成的文件
$outputDir = __DIR__ . '/output';
$recentFiles = glob($outputDir . '/*_element*.png');
usort($recentFiles, function ($a, $b) {
  return filemtime($b) - filemtime($a);
});

// 输出最近5个文件
$count = 0;
foreach ($recentFiles as $file) {
  if ($count++ > 5)
    break;
  $mtime = date('Y-m-d H:i:s', filemtime($file));
  echo "- " . basename($file) . " (修改时间: {$mtime})\n";
}

echo "\n测试完成！\n";